home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet internetowy / Rozne / HTTrack 3.40-2 / httrack-3.40-2.exe / {app} / src_win / WinHTTrack / about.cpp next >
C/C++ Source or Header  |  2004-02-14  |  7KB  |  310 lines

  1. // about.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "Shell.h"
  6. #include "about.h"
  7. //#include "about_sh.h"
  8.  
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14.  
  15. extern "C" {
  16.   #include "htsbase.h"
  17. }
  18.  
  19. extern HICON httrack_icon;
  20. extern CString _HTTRACK_VERSION;
  21.  
  22. extern int LANG_T(int);
  23. // Helper
  24. extern LaunchHelp* HtsHelper;
  25. extern "C" {
  26.   #include "HTTrackInterface.h"
  27.   #include "httrack-library.h"
  28. }
  29.  
  30. /////////////////////////////////////////////////////////////////////////////
  31. // Cabout dialog
  32.  
  33.  
  34. Cabout::Cabout(CWnd* pParent /*=NULL*/)
  35.     : CDialog(Cabout::IDD, pParent)
  36. {
  37.     //{{AFX_DATA_INIT(Cabout)
  38.     m_infover = _T("");
  39.     m_lang = -1;
  40.     //}}AFX_DATA_INIT
  41. }
  42.  
  43.  
  44. void Cabout::DoDataExchange(CDataExchange* pDX)
  45. {
  46.     CDialog::DoDataExchange(pDX);
  47.     //{{AFX_DATA_MAP(Cabout)
  48.     DDX_Control(pDX, IDC_SPLASH, m_splash);
  49.     DDX_Control(pDX, IDC_lang, m_ctl_lang);
  50.     DDX_Text(pDX, IDC_INFOVER, m_infover);
  51.     DDX_CBIndex(pDX, IDC_lang, m_lang);
  52.     //}}AFX_DATA_MAP
  53. }
  54.  
  55.  
  56. BEGIN_MESSAGE_MAP(Cabout, CDialog)
  57.     //{{AFX_MSG_MAP(Cabout)
  58.     ON_CBN_SELCHANGE(IDC_lang, OnSelchangelang)
  59.     ON_WM_HELPINFO()
  60.     ON_WM_LBUTTONDOWN()
  61.     ON_WM_MOUSEMOVE()
  62.     //}}AFX_MSG_MAP
  63.   ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  64.   ON_COMMAND(ID_HELP_FINDER,OnHelpInfo2)
  65.   ON_COMMAND(ID_HELP,OnHelpInfo2)
  66.     ON_COMMAND(ID_DEFAULT_HELP,OnHelpInfo2)
  67. END_MESSAGE_MAP()
  68.  
  69. /////////////////////////////////////////////////////////////////////////////
  70. // Cabout message handlers
  71.  
  72. BOOL Cabout::OnInitDialog() 
  73. {
  74.   //m_lang=LANG_T(-1);    // langue?
  75.   CDialog::OnInitDialog();
  76.  
  77.   WINDOWPLACEMENT wp;
  78.   m_splash.GetWindowPlacement(&wp);
  79.   wp.rcNormalPosition.right=wp.rcNormalPosition.left+300+1;
  80.   wp.rcNormalPosition.bottom=wp.rcNormalPosition.top+69+1; 
  81.   m_splash.SetWindowPlacement(&wp);
  82.  
  83.   m_ctl_lang.ResetContent();
  84.   {
  85.     char lang_str[1024];
  86.     //int old_lang=LANG_T(-1);
  87.     int i=0;
  88.     int curr_lng=LANG_T(-1);
  89.     QLANG_T(0);
  90.     strcpybuff(lang_str,"LANGUAGE_NAME");
  91.     LANG_LOAD(lang_str);    // 0 english 1 franτais..
  92.     while(strlen(lang_str)) {
  93.       m_ctl_lang.AddString(lang_str);
  94.       i++;
  95.       QLANG_T(i);
  96.       strcpybuff(lang_str,"LANGUAGE_NAME");
  97.       LANG_LOAD(lang_str);    // 0 english 1 franτais..
  98.     }
  99.     QLANG_T(curr_lng);
  100.     //LANG_T(min(old_lang,i-1));
  101.   }
  102.  
  103.   /* sel */
  104.   int i;
  105.   int max=m_ctl_lang.GetCount();
  106.   m_ctl_lang.SetCurSel(-1);
  107.   for(i=0;i<max;i++) {
  108.     CString st;
  109.     m_ctl_lang.GetLBText(i,st);
  110.     if (strcmp(st,LANGUAGE_NAME)==0) {
  111.       m_ctl_lang.SetCurSel(i);
  112.     }
  113.   }
  114.   
  115.   EnableToolTips(true);     // TOOL TIPS
  116.   setlang();
  117.   SetIcon(httrack_icon,false);
  118.   SetIcon(httrack_icon,true);  
  119.  
  120.   SetForegroundWindow();   // yop en premier plan!
  121.  
  122.     return TRUE;  // return TRUE unless you set the focus to a control
  123.                   // EXCEPTION: OCX Property Pages should return FALSE
  124. }
  125.  
  126. void Cabout::setlang() {
  127.   const char* avail = hts_is_available();
  128.   CString info = "WinHTTrack Website Copier ";
  129.   info+= _HTTRACK_VERSION;
  130.   if (avail && *avail) {
  131.     info+=" (";
  132.     info+= avail;
  133.     info+=")";
  134.   }
  135.   info+=LANG(LANG_K1);
  136.   info+="\r\n\r\n";
  137.   info+=LANG_K3;
  138.   info+=" :\r\n";
  139.   info+=HTTRACK_WEB;
  140.   SetDlgItemTextCP(this, IDC_INFOVER,info);
  141.   //
  142.   SetWindowText(LANG_K2);
  143.   //SetDlgItemTextCP(this, IDC_visit,LANG_K3);
  144. }
  145.  
  146. void Cabout::OnOK() 
  147. {
  148.   /*
  149.   DWORD a;
  150.   a=m_ctl_hot.GetHotKey();
  151.   int vcc=LOWORD(a);
  152.   int mod=HIWORD(a);
  153.   */
  154.     CDialog::OnOK();
  155. }
  156.  
  157. void Cabout::OnSelchangelang() 
  158. {
  159.   int r;
  160.   int old_lang=LANG_T(-1);
  161.   r = m_ctl_lang.GetCurSel();
  162.   if (r!=CB_ERR) {
  163.     CString st;
  164.     m_ctl_lang.GetLBText(r,st);
  165.     int i;
  166.     int max=m_ctl_lang.GetCount();
  167.     for(i=0;i<max;i++) {
  168.       char lang_str[1024];
  169.  
  170.       QLANG_T(i);
  171.       strcpybuff(lang_str,"LANGUAGE_NAME");
  172.       LANG_LOAD(lang_str);    // 0 english 1 franτais..
  173.  
  174.       //LANG_T(i);    // 0 english 1 franτais..
  175.       if (strcmp(st,lang_str)==0) {
  176.         LANG_T(i);
  177.         setlang();
  178.         if (i != old_lang)
  179.           AfxMessageBox("Please restart WinHTTrack so that your language preferences can be updated!");
  180.         return;
  181.       }
  182.     }
  183.     /* error */
  184.     LANG_T(0);    // 0 english 1 franτais..
  185.   }
  186.   setlang();
  187. }
  188.  
  189. // Appel aide
  190. void Cabout::OnHelpInfo2() {
  191.   (void)OnHelpInfo(NULL);
  192. }
  193.  
  194. BOOL Cabout::OnHelpInfo(HELPINFO* dummy) 
  195. {
  196.   //return CDialog::OnHelpInfo(pHelpInfo);
  197.   HtsHelper->Help();
  198.   return true;
  199.   //AfxGetApp()->WinHelp(0,HELP_FINDER);    // Index du fichier Hlp
  200.   //return true;
  201. }
  202.  
  203.  
  204.  
  205.  
  206.  
  207. // ------------------------------------------------------------
  208. // TOOL TIPS
  209. //
  210. // ajouter dans le .cpp:
  211. // remplacer les deux Wid1:: par le nom de la classe::
  212. // dans la message map, ajouter
  213. // ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  214. // dans initdialog ajouter
  215. // EnableToolTips(true);     // TOOL TIPS
  216. //
  217. // ajouter dans le .h:
  218. // char* GetTip(int id);
  219. // et en generated message map
  220. // afx_msg BOOL OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
  221. BOOL Cabout::OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
  222. {
  223.   TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
  224.   UINT nID =pNMHDR->idFrom;
  225.   if (pTTT->uFlags & TTF_IDISHWND)
  226.   {
  227.     // idFrom is actually the HWND of the tool
  228.     nID = ::GetDlgCtrlID((HWND)nID);
  229.     if(nID)
  230.     {
  231.       char* st=GetTip(nID);
  232.       if (st != "") {
  233.         pTTT->lpszText = st;
  234.         pTTT->hinst = AfxGetResourceHandle();
  235.         return(TRUE);
  236.       }
  237.     }
  238.   }
  239.   return(FALSE);
  240. }
  241. char* Cabout::GetTip(int ID)
  242. {
  243.   switch(ID) {
  244.     case IDC_lang:   return LANG_U1; break;
  245.     case IDC_abouticon: return LANG_K3 ; break;
  246.     case IDCANCEL:   return LANG(LANG_TIPCANCEL); break;
  247.     case IDOK:       return LANG(LANG_TIPOK); break;
  248.   }
  249.   return "";
  250. }
  251. // TOOL TIPS
  252. // ------------------------------------------------------------
  253.  
  254. void Cabout::OnLButtonDown(UINT nFlags, CPoint point) 
  255. {
  256.   int id=0;
  257.   CWnd* w=ChildWindowFromPoint(point);
  258.   if (w)
  259.     id=w->GetDlgCtrlID();
  260.  
  261.   // Select
  262.   switch(id) {
  263.     case 0: break;
  264.     case IDC_SPLASH:
  265.       this->ClientToScreen(&point);
  266.       w->ScreenToClient(&point);
  267.     if ((point.y>=100) && (point.y<=110) || (point.y<=80)) {
  268.       if (!ShellExecute(NULL,"open","http://www.httrack.com","","",SW_RESTORE)) {
  269.       }
  270.     }
  271.     break;
  272.   }
  273.  
  274.   CDialog::OnLButtonDown(nFlags, point);
  275. }
  276.  
  277. void Cabout::OnMouseMove(UINT nFlags, CPoint point) 
  278. {
  279.   int id=0;
  280.   CWnd* w=ChildWindowFromPoint(point);
  281.   if (w)
  282.     id=w->GetDlgCtrlID();
  283.  
  284.   // Select
  285.   switch(id) {
  286.   case 0: break;
  287.   case IDC_SPLASH:
  288.     this->ClientToScreen(&point);
  289.     w->ScreenToClient(&point);
  290.     HCURSOR curs=NULL;
  291.     if (
  292.          (point.y>=120) && (point.y<=140)
  293.       || (point.y<=80)
  294.       || (point.y>=100) && (point.y<=110)
  295.       ) {
  296.       curs=AfxGetApp()->LoadCursor(IDC_CURSWWW);
  297.     } else {
  298.       curs=AfxGetApp()->LoadStandardCursor(IDC_ARROW);
  299.     }
  300.     if (curs) {
  301.       //if (curs != currentCurs) {
  302.         SetCursor(curs);
  303.         // currentCurs=curs;
  304.       //}
  305.     }
  306.   }  
  307.  
  308.     CDialog::OnMouseMove(nFlags, point);
  309. }
  310.